# -*- coding: utf-8 -*-
"""
Created on 2021/5/26 9:19

@File: read_settings.py
@Author: LT
@Description: 分析配置参数的事情交给这个模块来做，这样就无须每个模块进行配置参数分析了
"""
from configparser import ConfigParser
from ..about_gui.gui_mainloop_demo import GuiDemo
import os

path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'settings.cfg')

# myexceldialog = GuiDemo()
# myexceldialog.lbl.config(text="请点击下方按钮选择配置文件")
# myexceldialog.btn.config(text="Open target cfg file")
# myexceldialog.mainloop()
# fetched_excel_path = myexceldialog.open_name


class SettingsWrapper:
    def __init__(self):
        self.config_path = path
        # self.config_path = fetched_excel_path
        self.wrapper = ConfigParser()                               # 直接包装这个配置参数解析器实例
        self.wrapper.read(self.config_path, encoding='utf-8')       # 读取配置文件
        self.database_connect_kwargs = self.__about_database()      # 获取连接到数据库的必要信息
        (self.excel_titles_list,                                    # 指定标准表头
         self.excel_none_value_forbidden_titles_list,               # 不能含有空值的表头
         self.excel_repeating_forbidden_titles_list,                # 不能含有重复值的表头
         ) = self.__about_excel()                                   # 获取excel表格的各种表头信息
        self.renter_and_customer_dict = self.__about_renter()                    # 获取租户界面的一些特定的具体信息

    def __about_database(self):
        """与数据库相关的参数在这获得"""
        host = self.wrapper['database'].get('host')
        port = self.wrapper['database'].getint('port')
        user = self.wrapper['database'].get('user')
        password = self.wrapper['database'].get('password')
        database_name = self.wrapper['database'].get('database_name')  # 选择到具体的数据库

        connect_kwargs = {
            'host': host,
            'port': port,
            'user': user,
            'password': password,
            'database': database_name,
        }
        return connect_kwargs

    def __about_excel(self):
        """
        与excel表格相关的参数在这获得
        :return: list
        """
        titles = self.wrapper['excel'].get('titles')
        none_value_forbidden_titles = self.wrapper['excel'].get('none_value_forbidden_titles')
        repeating_forbidden_titles = self.wrapper['excel'].get('repeating_forbidden_titles')
        return ([each.strip() for each in titles.split(',')],
                [each.strip() for each in none_value_forbidden_titles.split(',')],
                [each.strip() for each in repeating_forbidden_titles.split(',')]
                )

    def __about_renter(self):
        """与租户页面有关的信息在这获取到"""
        temp = {
            '龙港': self.wrapper['renter&customer'].getint('龙港区_行政区划代码'),
            '鹿城': self.wrapper['renter&customer'].getint('鹿城区_行政区划代码'),
            '龙湾': self.wrapper['renter&customer'].getint('龙湾区_行政区划代码'),
            '瓯海': self.wrapper['renter&customer'].getint('瓯海区_行政区划代码'),
            '洞头': self.wrapper['renter&customer'].getint('洞头县_行政区划代码'),
            '永嘉': self.wrapper['renter&customer'].getint('永嘉县_行政区划代码'),
            '平阳': self.wrapper['renter&customer'].getint('平阳县_行政区划代码'),
            '苍南': self.wrapper['renter&customer'].getint('苍南县_行政区划代码'),
            '文成': self.wrapper['renter&customer'].getint('文成县_行政区划代码'),
            '泰顺': self.wrapper['renter&customer'].getint('泰顺县_行政区划代码'),
            '瑞安': self.wrapper['renter&customer'].getint('瑞安市_行政区划代码'),
            '乐清': self.wrapper['renter&customer'].getint('乐清市_行政区划代码'),
            '温州经济技术开发区': self.wrapper['renter&customer'].getint('温州经济技术开发区_行政区划代码'),
            '管理员姓名': self.wrapper['renter&customer'].get('管理员姓名'),
            '管理员手机号': self.wrapper['renter&customer'].get('管理员手机号'),
            '管理员email': self.wrapper['renter&customer'].get('管理员email'),
        }

        return temp


if __name__ == '__main__':
    exp = SettingsWrapper()
    print(exp.database_connect_kwargs, exp.excel_titles_list, exp.excel_none_value_forbidden_titles_list, sep='\n')
